package com.vates.vsp.practico.asistencia.business;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;

import com.vates.vsp.practico.aistencia.service.AsistenciaService;
import com.vates.vsp.practico.aistencia.view.AsistenciaView;
import com.vates.vsp.practico.alumnos.business.Alumno;
import com.vates.vsp.practico.alumnos.business.Clases;
import com.vates.vsp.practico.alumnos.service.AlumnoService;
import com.vates.vsp.practico.alumnos.service.ClasesService;
import com.vates.vsp.practico.commons.UseCaseMode;

@ManagedBean(name = "asistenciaListener")
@SessionScoped
public class AsistenciaListener {
	@ManagedProperty(value = "#{asistenciaView}")
	private AsistenciaView asistenciaView;

	@ManagedProperty(value = "#{asistenciaService}")
	private AsistenciaService asistenciaService;

	@ManagedProperty(value = "#{alumnoService}")
	private AlumnoService alumnoService;

	@ManagedProperty(value = "#{clasesService}")
	private ClasesService clasesService;

	public AsistenciaService getAsistenciaService() {
		return asistenciaService;
	}

	public void setAsistenciaService(AsistenciaService asistenciaService) {
		this.asistenciaService = asistenciaService;
	}

	public AlumnoService getAlumnoService() {
		return alumnoService;
	}

	public void setAlumnoService(AlumnoService alumnoService) {
		this.alumnoService = alumnoService;
	}

	public AsistenciaView getAsistenciaView() {
		return asistenciaView;
	}

	public void setAsistenciaView(AsistenciaView asistenciaView) {
		this.asistenciaView = asistenciaView;
	}

	public ClasesService getClasesService() {
		return clasesService;
	}

	public void setClasesService(ClasesService clasesService) {
		this.clasesService = clasesService;
	}

	public String crearAsistenciaLista() {
		asistenciaView.setUseCaseMode(UseCaseMode.NUEVO);
		asistenciaView.setClase(new Clases());
		asistenciaView.setTemas(clasesService.getClases());
		asistenciaView.setAlumno(alumnoService.getAlumnos());
		asistenciaView.setAsistio(new ArrayList<Integer>());
		return "asistencia";
	}

	public String guardarAsistencia() {
		List<Alumno> listaAlumnos = asistenciaView.getAlumno();
		List<Asistencia> listadoAsistencia = new ArrayList<Asistencia>();
		List<Integer> listaPresentes = asistenciaView.getAsistio();
		Clases tema = asistenciaView.getClase();
		for (Alumno alumno : listaAlumnos) {
			if (listaPresentes.contains(alumno.getId())) {
				listadoAsistencia.add(new Asistencia(alumno, tema, 1));
			} else {
				listadoAsistencia.add(new Asistencia(alumno, tema, 0));
			}
		}
		asistenciaService.guardar(listadoAsistencia);
		return "inicio";
	}

	public void temaDelDia(AjaxBehaviorEvent event) {
		Clases clase = asistenciaView.getClase();
		asistenciaView.setClase(asistenciaService.getClase(clase));
	}
}
